//
//  JKTitleButton.swift
//  JKWeibo
//
//  Created by albert on 16/5/12.
//  Copyright © 2016年 albert. All rights reserved.
//

import UIKit

class JKTitleButton: UIButton {

    //可以通过下面这两个方法实现按钮图片和文字的排布位置
//    override func titleRectForContentRect(contentRect: CGRect) -> CGRect {
//        
//    }
//    
//    override func imageRectForContentRect(contentRect: CGRect) -> CGRect {
//        
//    }
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        
        setup()
    }

    // Swift建议要使用代码创建就只使用代码，要使用xib/sb就只使用xib/sb，最好不要混合，但是这里混合使用也并没有问题
    required init?(coder aDecoder: NSCoder) {
        // 系统对initWithCoder的默认实现是报一个致命错误，崩溃
        //fatalError("init(coder:) has not been implemented")
        
        super.init(coder: aDecoder)
        
        setup()
    }
    
    //MARK: - 初始化
    private func setup(){
        // 去除高亮
        adjustsImageWhenHighlighted = false
        
        // 设置属性
        setTitleColor(UIColor.darkGrayColor(), forState: UIControlState.Normal)
        setImage(UIImage(named: "navigationbar_arrow_down"), forState: UIControlState.Normal)
        setImage(UIImage(named: "navigationbar_arrow_up"), forState: UIControlState.Selected)
        
        // 尺寸
        sizeToFit()
    }
    
    // 图片和文字中间的间距，这里使用非主流的方法，加空格
    override func setTitle(title: String?, forState state: UIControlState) {
        
        // title是可选类型，是不能直接和"  "加法运算的，可以用双问号 ?? 判断
        // 双问号 ?? 用于判断前面的参数是否是nil，如果是nil就返回??后面的数据，如果不是nil，那么就是??前面的数据，??后面的语句不执行
        super.setTitle((title ?? "") + "  ", forState: UIControlState.Normal)
    }
    
    override func layoutSubviews() {
        super.layoutSubviews()
        
        /* offsetInPlace 用于设置控件的偏移位
        titleLabel?.frame.offsetInPlace(dx: -imageView!.width, dy: 0)
        imageView?.frame.offsetInPlace(dx: titleLabel!.width, dy: 0) */
        
        titleLabel?.frame.origin.x = 0
        imageView?.frame.origin.x = titleLabel!.frame.size.width
    }
    
}
